package com.zenithmind.user.pojo.query;

import com.zenithmind.common.query.BaseQuery;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.NoArgsConstructor;

import java.time.LocalDateTime;

/**
 * 租户查询对象
 * 
 * @author ZenithMind
 * @since 2024-06-30
 */
@EqualsAndHashCode(callSuper = true)
@Data
@AllArgsConstructor
@NoArgsConstructor
@Schema(description = "租户查询对象")
public class TenantQuery extends BaseQuery {

    @Schema(description = "租户编码（模糊查询）")
    private String tenantCode;

    @Schema(description = "租户名称（模糊查询）")
    private String tenantName;

    @Schema(description = "租户类型（1-企业版，2-个人版，3-试用版）")
    private Integer tenantType;

    @Schema(description = "状态（0-禁用，1-启用，2-试用，3-过期）")
    private Integer status;

    @Schema(description = "联系人姓名（模糊查询）")
    private String contactName;

    @Schema(description = "联系人邮箱（模糊查询）")
    private String contactEmail;

    @Schema(description = "创建时间开始")
    private LocalDateTime createTimeStart;

    @Schema(description = "创建时间结束")
    private LocalDateTime createTimeEnd;

    @Schema(description = "到期时间开始")
    private LocalDateTime expireTimeStart;

    @Schema(description = "到期时间结束")
    private LocalDateTime expireTimeEnd;

    @Schema(description = "是否即将到期（7天内）")
    private Boolean isExpiringSoon;

    @Schema(description = "是否已过期")
    private Boolean isExpired;

    @Schema(description = "最小用户数")
    private Integer minUsers;

    @Schema(description = "最大用户数")
    private Integer maxUsers;

    @Schema(description = "存储使用率最小值（百分比）")
    private Double minStorageUsageRate;

    @Schema(description = "存储使用率最大值（百分比）")
    private Double maxStorageUsageRate;
}
